openCV任意几何形状感兴趣区域(ROI)提取

您所在的位置:网站首页 ROI提取 matlab openCV任意几何形状感兴趣区域(ROI)提取

openCV任意几何形状感兴趣区域(ROI)提取

2024-07-02 19:49| 来源: 网络整理| 查看: 265

图像感兴趣区域(ROI)提取主要使用掩模来进行。掩模是二值图像,感兴趣区域的掩模值设置为255,非感兴趣区域的掩模值为0  获取掩模的方法主要有两种

方法一 使用opencv中Mat函数方法,调用Mat(Rect).setTo方法设置掩模

Mat Mat::operator()( const Rect& roi ) const //调用Mat(Rect).setTo方法 mask(rect).setTo(255); 123

方法二 在全为0的原始掩模中画一个封闭区域,使用漫水填充算法填充封闭区域,将封闭区域的值都设置为255,实现掩模的提取

下文对矩形、椭圆,有方向的矩形,轮廓进行提取

1.矩形感兴趣区域提取

(1)调用Mat(Rect).setTo方法设置掩模  使用方法一对矩形感兴趣区域进行提取示例代码如下:

#include #include using namespace cv; //方法1,假如区域为长方形,使用MAT 构造函数设置区域内的值为255 int main() { Mat image=imread("lena.jpg"); //初始化掩模矩阵 Mat mask = Mat::zeros(image.size(), CV_8UC1); Rect rect; rect.x = 100; rect.y = 100; rect.width = 100; rect.height = 100; //设置矩形掩模 mask(rect).setTo(255); Mat img2; image.copyTo(img2, mask); imshow("mask", mask); imshow("img2", img2); waitKey(); return 0; } 12345678910111213141516171819202122232425

(2)使用漫水填充算法获取矩形ROI  思路:  1)新建一个值全为零的掩模图像(全是黑的,值为0)  2)在掩模图像上用白色画出矩形的边界(边界值为255)  3)选取矩形的中心作为种子点,使用漫水填充算法将矩形的内部填充为白色(255),最后得到掩模图像,使用掩模实现感兴趣区域提取。

#include #include using namespace cv; int main() { Mat image = imread("lena.jpg"); Mat mask = Mat::zeros(image.size(), CV_8UC1); Rect rect; rect.x = 100; rect.y = 100; rect.width = 100; rect.height = 100; //画矩形 rectangle(mask, rect, Scalar(255)); //设置种子点位置 Point seed; seed.x = 150; seed.y = 150; //pi的值表示为 v(pi),if v(seed)-loDifftotal); IplImage* imask = &IplImage(mask); IplImage* iimage = &IplImage(image); draw_external_contour_gray(contour, imask); Point seed; seed.x = 35; seed.y = 60; //漫水填充 //pi的值表示为 v(pi),if v(seed)-loDiff


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3